package com.example.fmmall.controller;

import com.example.fmmall.vo.ResultVO;
import io.swagger.annotations.Api;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

import java.net.PortUnreachableException;

/**
 * Date:2022/1/30
 * Author:S
 * Description:
 * Note:
 */
//声明是控制器
//@Controller

//RESTful设计：3、将返回的对象JSON格式化。
// 在控制器类上写，或者在需要的方法上写。
//@ResponseBody

// @RestController包含@Controller和@ResponseBody
@RestController
@RequestMapping("/goods")
@Api(value = "提供商品添加、删除、修改及查询的接口", tags = "商品管理")
public class GoodsController {

    //RESTful设计：4、前端（安卓、ios、pc）通过无状态的HTTP协议与后端接口进行交互。无状态：两次请求之间没有关联性；
    //请求方式method = RequestMethod：post添加，get查询，put修改，delete删除，option预检

    //@RequestMapping(value = "/add", method = RequestMethod.POST)
    @PostMapping(value = "/add")
    //@ResponseBody
    public ResultVO addGoods() {
        return null;
    }

    //@ApiIgnore 可以用在类、方法上，方法参数中，用来屏蔽某些接口或参数，使其不在页面上显示。
    //传统的url，访问形式：http://localhost:8080/goods/delete/1
    //@RequestMapping(value = "/delete", method = RequestMethod.DELETE)

    //RESTful设计：1、每个url代表唯一的商品，访问形式 http://localhost:8080/goods/delete/1
    // {gid}表示通配符，全部会拦截,goodsId接收gid的值
    //@RequestMapping(value = "/delete/{gid}")

    //RESTful设计：2、method使用请求方式代表不同的请求。
    //@RequestMapping(value = "/{gid}",method = RequestMethod.DELETE)
    @DeleteMapping("/{id}")
    //PathVariable接收@DeleteMapping("/{id}")的值id.
    public ResultVO deleteGoods(@PathVariable("gid") int goodsId) {
        System.out.println("------" + goodsId);
        return new ResultVO(10000, "delete success", null);
    }

    //@RequestMapping(value = "/update", method = RequestMethod.PUT)
    @PutMapping("/{id}")
    public ResultVO updateGoods() {
        return null;
    }

    //@RequestMapping(value = "/list", method = RequestMethod.GET)
    @GetMapping("/list")
    public ResultVO listGoods() {
        return null;
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public ResultVO getGoods(@PathVariable("id") int goodsId) {
        return null;
    }
}
